package template;

import containers.Generator;
import template.coffee.Generators;

import java.util.ArrayList;
import java.util.Random;

class Product{
	private final int id;
	private String desc;
	private double price;
	public Product(int id,String desc,double price){
		this.id = id;
		this.desc = desc;
		this.price = price;
	}
	public String toString(){
		return  id + ": " + desc + ". price: "+price;
	}
	public void priceChange(double change){
		price += change;
	}
	public static Generator<Product> generator = new Generator<Product>() {
		private Random rand = new Random(47);
		@Override
		public Product next() {
			return new Product(rand.nextInt(1000),"Test",Math.round(rand.nextDouble()*1000.0)+0.99);
		}
	};
}
class Shelf extends ArrayList<Product>{
	public Shelf(int nProducts){
		Generators.fill(this,Product.generator,nProducts);
	}
}
class Aisle extends ArrayList<Shelf>{
	public Aisle(int nShelves,int nProducts){
		for (int i = 0 ;i < nShelves;i ++){
			add(new Shelf(nProducts));
		}
	}
}
class CheckoutStand{}
class Office{}
public class Store extends ArrayList<Aisle> {
	private ArrayList<CheckoutStand> checkouts = new ArrayList<CheckoutStand>();
	private Office office = new Office();
	public Store(int nAisles,int nShelfs,int nProducts){
		for (int i =0;i < nAisles;i ++) {
			add(new Aisle(nShelfs, nProducts));
		}
	}
	public String toString(){
		StringBuffer sb = new StringBuffer();
		for (Aisle a : this)
			for (Shelf s : a)
				for (Product p : s) {
					sb.append(p);
					sb.append("\n");
				}
		return sb.toString();
	}
	public static void main(String[] args){
		System.out.println(new Store(14,5,10));
	}
}
